package com.sitanyun.merchant.guide.weiht;

import android.content.Context;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.net.Uri;
import android.os.CountDownTimer;
import android.text.TextUtils;
import android.widget.TextView;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 验证手机
 */
public class PhoneUtils {

    /**
     * 拨打电话（跳转到拨号界面，用户手动点击拨打）
     *
     * @param context  上下文
     * @param phoneNum 电话号码
     */
    public static void callPhone(Context context, String phoneNum) {
        Intent intent = new Intent(Intent.ACTION_DIAL);
        Uri data = Uri.parse("tel:" + phoneNum);
        intent.setData(data);
        context.startActivity(intent);
    }

/*

判读时间差距，两个时间相差多少天，时，分，秒

*/

    public static Long getDay(String date) {

        DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Long days = null;
        try {
            Date currentTime = dateFormat.parse(dateFormat.format(new Date()));//现在系统当前时间
            Date pastTime = dateFormat.parse(date);//过去时间
            long diff = currentTime.getTime() - pastTime.getTime();
            days = diff / (1000 * 60 * 60 * 24);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        return days;

    }

    //拨打电话
    public static void call(Context context, String phone) {
        if (context == null) {
            return;
        }
        Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:" + phone));
        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.getApplicationContext().startActivity(intent);
    }
   /* *//**验证手机号码
     * @param mobiles
     * @return
     *//*
    public static boolean isMobleNo(String mobiles){
        String telRegex = "[1][345789]\\d{9}";//"[1]"代表第1位为数字1，"[34578]"代表第二位可以为3、5、8中的一个，"\\d{9}"代表后面是可以是0～9的数字，有9位。
        if (TextUtils.isEmpty(mobiles)) return false;
        else return mobiles.matches(telRegex);
    }*/

    /**
     * 验证手机格式
     */
    public static boolean isMobleNo(String phone) {
        boolean flag = true;
        String regex = "^((13[0-9])|(14[5|7|9])|(15([0-3]|[5-9]))|(16[6])|(17[013678])|(18[0-9])|(19[8|9]))\\d{8}$";
        if (phone.length() != 11 || TextUtils.isEmpty(phone)) {
            flag = false;
            return flag;
        } else {
            Pattern p = Pattern.compile(regex);
            Matcher m = p.matcher(phone);
            boolean isMatch = m.matches();
            if (!isMatch) {
                flag = false;
            }
        }
        return true;
    }

    /**
     * 验证电话号码
     *
     * @param tel
     * @return
     */
    public static boolean isTelNo(String tel) {
//        Pattern p = Pattern.compile("^(0\\d{2,3}-\\d{7,8}(-\\d{3,5}){0,1})|(1[3578]\\d{9})$");
        Pattern p = Pattern.compile("^(400|800)([0-9\\\\-]{7,10})|(0?[0-9]{3}(-| )?)?([0-9]{7,8})$");
        Matcher m = p.matcher(tel);
        return m.matches();
    }
    /**
     * 包含大小写字母及数字且在6-12位
     * 是否包含
     *
     * @param str
     * @return
     */
    public static boolean isLetterDigit(String str) {
        boolean isDigit = false;//定义一个boolean值，用来表示是否包含数字
        boolean isLetter = false;//定义一个boolean值，用来表示是否包含字母
        for (int i = 0; i < str.length(); i++) {
            if (Character.isDigit(str.charAt(i))) {   //用char包装类中的判断数字的方法判断每一个字符
                isDigit = true;
            } else if (Character.isLetter(str.charAt(i))) {  //用char包装类中的判断字母的方法判断每一个字符
                isLetter = true;
            }
        }
        String regex = "^[a-zA-Z0-9]{6,12}$";
        boolean isRight = isDigit && isLetter && str.matches(regex);
        return isRight;
    }

    /**
     * 验证是否为手机号或电话号
     *
     * @param phoneNumber
     * @return
     */
    public static boolean isPhoneNumber(String phoneNumber) {
        return isMobleNo(phoneNumber) || isTelNo(phoneNumber);
    }

    /**
     * 隐藏手机号中间四位
     *
     * @param phone
     * @return
     */
    public static String formatPhone(String phone) {
        return phone.replaceAll("(\\d{3})\\d{4}(\\d{4})", "$1****$2");
    }


  /*  public static String formatDisplayPhoneByPermission(Context context, String phone) {
        if (!SpDataUtils.getIsLogin(context)) {
            return formatPhone(phone);
        } else {
            return phone;
        }
    }*/

    /**
     * 获取验证码倒计时
     */
    public static void setRegisterTimeCount(final TextView view, long fen, long miao) {
        CountDownTimer timer = new CountDownTimer(fen, miao) {
            ColorStateList originalColor = view.getTextColors();

            @Override
            public void onTick(long millisUntilFinished) {
                view.setEnabled(false);
                view.setAllCaps(false);
              //  view.setTextColor(Color.parseColor("#ffffff"));
                view.setText(millisUntilFinished / 1000 + "s");
            }

            @Override
            public void onFinish() {
                view.setText("重新获取验证码");
                view.setTextColor(originalColor);
                view.setEnabled(true);
            }
        };
        timer.start();
    }

//    /**
//     * 获取设备的唯一标识， 需要 “android.permission.READ_Phone_STATE”权限
//     */
//
//    public static String getIMEI(Context context) {
//        TelephonyManager tm = (TelephonyManager) context
//                .getSystemService(Context.TELEPHONY_SERVICE);
//        String deviceId = tm.getDeviceId();
//        if (deviceId == null) {
//            return "UnKnown";
//        } else {
//            return deviceId;
//        }
//    }
}
